递归,即程序(函数)直接或者间接调用自己的一个过程。
递归算法主要有四个特点:
1. 必须有可达到的终止条件,不然程序(函数)将陷入死循环(死锁);
2. 子过程可通过再次递归的方式调用求解或因满足终止条件而直接求解;
3. 子过程的规模比原过程小(一般是折半),或更接近终止条件;
4. 所有子过程的解构成整个过程的解的集合。
先来一段代码:
下面是分组归并排序(分治法)的递归过程:
在Java环境下运行:
void Mergesort(int arr[],int s,int t) {
int m,r1[]=